Document synchronization in a system via file transfers can be very costly when large documents are being synchronized and/or there is little bandwidth available for data transfer. To reduce the impact of document synchronization, many systems maintain a transaction log recording the changes to each document. When a request is made to synchronize a destination document to a source document, the system simply returns the changes made to the source document since the destination document was last updated. However, this method is still costly in terms of space as an extensive transaction log must be stored.
In view of the foregoing, it would be beneficial to provide a system that compares the source and destination documents to create a transaction log on the fly. This would save on costly document transfers and transaction log storage. One example of where this system would be particularly useful is synchronizing reports in a Business Intelligence system.
Business Intelligence (BI) generally refers to a category of software systems and applications used to improve business enterprise decision-making and governance. These software tools provide techniques for analyzing and leveraging enterprise applications and data. These tools are commonly applied to financial, human resource, marketing, sales, service provision, customer and supplier analyses. More specifically, these tools can include: reporting and analysis tools to analyze, forecast and present information, content delivery infrastructure systems for delivery, storage and management of reports and analytics, data warehousing systems for cleansing and consolidating information from disparate sources, and integration tools to analyze and generate workflows based on enterprise systems. Business Intelligence tools work with data management systems, such as relational databases or On Line Analytic Processing (OLAP) systems used to collect, store, and manage raw data and transactional enterprise systems that generate data. A subset of business intelligence tools are report engines, OLAP systems, Enterprise Information Management (EIM) systems, Extract, Transform Load (ETL) tools, dashboards, and analytics.
There are a number of commercially available products to produce reports from stored data. For instance, Business Objects™, San Jose, Calif., sells a number of widely used report generation products, including Crystal Reports™, Business Objects Voyager™, Business Objects Web Intelligence™, and Business Objects Enterprise™. As used herein, the term report refers to information automatically retrieved (i.e., in response to computer executable instructions) from a data source (e.g., a database, a data warehouse, a plurality of reports, and the like), where the information is structured in accordance with a report schema that specifies the form in which the information should be presented. A non-report is an electronic document that is constructed without the automatic retrieval of information from a data source. Examples of non-report electronic documents include typical business application documents, such as a word processor document, a presentation document, and the like.
A report document specifies how to access data and format it. A report document where the content does not include external data, either saved within the report or accessed live, is a template document for a report rather than a report document. Unlike, other non-report documents that may optionally import external data within a document, a report document by design is primarily a medium for accessing and, formatting, transforming and or presenting external data.
A report is specifically designed to facilitate working with external data sources. In addition to information regarding external data source connection drivers, the report may specify advanced filtering of data, information for combining data from different external data sources, information for updating join structures and relationships in report data, and instructions including logic to support a more complex internal data model (that may include additional constraints, relationships, and metadata).
In contrast to a spreadsheet type application, a report generation tool is generally not limited to a table structure but can support a range of structures, such as sections, cross-tables, synchronized tables, sub-reports, hybrid charts, and the like. A report design tool is designed primarily to support imported external data, whereas a spreadsheet application equally facilitates manually entered data and imported data. In both cases, a spreadsheet application applies a spatial logic that is based on the table cell layout within the spreadsheet in order to interpret data and perform calculations on the data. In contrast, a report design tool is not limited to logic that is based on the display of the data, but rather can interpret the data and perform calculations based on the original (or a redefined) data structure and meaning of the imported data. The report may also interpret the data and perform calculations based on pre-existing relationships between elements of imported data. Spreadsheets applications generally work within a looping calculation model, whereas a report generation tools may support a range of calculation models. Although there may be an overlap in the function of a spreadsheet document and a report document, the applications used to generate these documents contain instructions with express different assumptions concerning the existence of an external data source and different logical approaches to interpreting and manipulating imported data.